﻿#ifndef EXECONFIG_H
#define EXECONFIG_H

#include <QObject>
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlRecord>
#include <QJsonObject>
#include <QJsonArray>
#include <DbHelper.h>
#include <QRandomGenerator>
#include <Connect/UdpClient.h>
#include <CommonHelper.h>
#include <qmessagebox.h>
#include <QFileDialog>
#include <QTextCodec>
#include <QCoreApplication>
#include "logHelper/debugLog.h"

class ExeConfig: public QObject
{
    Q_OBJECT
public:
    ExeConfig();
    Q_INVOKABLE  QJsonArray readsypz(int id);
    Q_INVOKABLE  void wsyxx(QString id,QString name, QString type, QString path,QString start);

    Q_INVOKABLE QStringList rsyxx(int id);
    Q_INVOKABLE QJsonArray readsypzlist(QString name);
    Q_INVOKABLE void newsypz();
    Q_INVOKABLE void delsypz(int id);
    Q_INVOKABLE void upall(QString id, QString numv, QString v1, QString v2, QString v3, QString v4, QString v5, QString v6, QString v7, QString v8, QString v9);
    Q_INVOKABLE QStringList readall(QString id, QString numv);
    Q_INVOKABLE void delkj(QString id, QString numv);
    Q_INVOKABLE void addkj(QString id, QString numv,QString type);
    Q_INVOKABLE void kjchange(QString id, double mbwz,QString kswz);
    Q_INVOKABLE void copyypz(QString copyid);
    Q_INVOKABLE int getdef(int id);
    Q_INVOKABLE void setdef(int id);
    Q_INVOKABLE void addkjchange(QString id, double mbwz,QString type);
    Q_INVOKABLE QJsonArray getdeff(int val);
    Q_INVOKABLE void updatadeff(int id, int num, QString name,QString namev);
    Q_INVOKABLE void adddeff(int id);
    Q_INVOKABLE bool deldeff(int id, int num);
    Q_INVOKABLE void delnulldeff();
    Q_INVOKABLE void defset(int id, int num);
    Q_INVOKABLE QStringList getzsqdef();
    Q_INVOKABLE QStringList getggdef();
    Q_INVOKABLE QString getDistance(QString,QString,QString,QString);
    Q_INVOKABLE QString getVolume(QString,QString,QString,QString);
    Q_INVOKABLE void resetAllSyringe(QString);
    Q_INVOKABLE QString getSyringType(QString,QString);
    Q_INVOKABLE QString passwordRead();
    Q_INVOKABLE void passwordWrite(QString password);
    Q_INVOKABLE int checkPassword(QString);
    Q_INVOKABLE int   getSyringeNumByConsumableName(QString consumableName);      // 根据耗材名称获取注射器的数量-JNN

    int shunxunumb=1;
    Q_INVOKABLE QString rsyty(int id);
    Q_INVOKABLE  QStringList gethclxdef();
    Q_INVOKABLE QStringList zpgethclxdef();
    QString getSyringTypezsq(QString ConsumablesTypes, QString serial);

    Q_INVOKABLE int exportExeConfig(int,QString);
    Q_INVOKABLE int importExeConfig(int);

    Q_INVOKABLE int exportMainExeConfig(QString);
    Q_INVOKABLE int importMainExeConfig();

    // 放转靶实验流程配置
    Q_INVOKABLE QJsonArray zbreadsypz(int id);
    Q_INVOKABLE int zbgetdef(int id);
    Q_INVOKABLE void zbsetdef(int id);
    Q_INVOKABLE void zbwsyxx(QString id, QString name, QString type);
    Q_INVOKABLE QStringList zbrsyxx(int id);
    Q_INVOKABLE QJsonArray zbreadsypzlist(QString name);
    Q_INVOKABLE void zbnewsypz();
    Q_INVOKABLE void zbcopyypz(QString copyid);
    Q_INVOKABLE void zbdelsypz(int id);
    Q_INVOKABLE void zbupall(QString id, QString numv, QString v1, QString v2, QString v3, QString v4, QString v5, QString v6, QString v7, QString v8, QString v9);
    Q_INVOKABLE QStringList zbreadall(QString id, QString numv);
    Q_INVOKABLE void zbdelkj(QString id, QString numv);
    Q_INVOKABLE void zbaddkj(QString id, QString numv, QString type);
    Q_INVOKABLE void zbaddkjchange(QString id, double mbwz, QString type);
    // 打靶实验流程配置
    Q_INVOKABLE QJsonArray dbreadsypz(int id);
    Q_INVOKABLE int dbgetdef(int id);
    Q_INVOKABLE void dbsetdef(int id);
    Q_INVOKABLE void dbwsyxx(QString id, QString name, QString type);
    Q_INVOKABLE QStringList dbrsyxx(int id);
    Q_INVOKABLE QJsonArray dbreadsypzlist(QString name);
    Q_INVOKABLE void dbnewsypz();
    Q_INVOKABLE void dbcopyypz(QString copyid);
    Q_INVOKABLE void dbdelsypz(int id);
    Q_INVOKABLE void dbupall(QString id, QString numv, QString v1, QString v2, QString v3, QString v4, QString v5, QString v6, QString v7, QString v8, QString v9);
    Q_INVOKABLE QStringList dbreadall(QString id, QString numv);
    Q_INVOKABLE void dbdelkj(QString id, QString numv);
    Q_INVOKABLE void dbaddkj(QString id, QString numv, QString type);
    Q_INVOKABLE void dbaddkjchange(QString id, double mbwz, QString type);

    // 放靶实验流程配置
    Q_INVOKABLE QJsonArray fbreadsypz(int id);
    Q_INVOKABLE int fbgetdef(int id);
    Q_INVOKABLE void fbsetdef(int id);
    Q_INVOKABLE void fbwsyxx(QString id, QString name, QString type);
    Q_INVOKABLE QStringList fbrsyxx(int id);
    Q_INVOKABLE QJsonArray fbreadsypzlist(QString name);
    Q_INVOKABLE void fbnewsypz();
    Q_INVOKABLE void fbcopyypz(QString copyid);
    Q_INVOKABLE void fbdelsypz(int id);
    Q_INVOKABLE void fbupall(QString id, QString numv, QString v1, QString v2, QString v3, QString v4, QString v5, QString v6, QString v7, QString v8, QString v9);
    Q_INVOKABLE QStringList fbreadall(QString id, QString numv);
    Q_INVOKABLE void fbdelkj(QString id, QString numv);
    Q_INVOKABLE void fbaddkj(QString id, QString numv, QString type);
    Q_INVOKABLE void fbaddkjchange(QString id, double mbwz, QString type);

    // 总实验流程
    Q_INVOKABLE QVariantList getAllEx();
    Q_INVOKABLE void delAllEx();
    Q_INVOKABLE void delExbyid(QString id);
    Q_INVOKABLE void saveAllEx(QVariantList alldata);
    Q_INVOKABLE QString getnj(QString zsqtype);





    Q_INVOKABLE QStringList getMaskingInformation();
    Q_INVOKABLE void updataMaskingInformation(QStringList value);
    Q_INVOKABLE QStringList fbgetlclist(QString id);
    Q_INVOKABLE QStringList dbgetlclist(QString id);
    Q_INVOKABLE QStringList zbgetlclist(QString id);
    Q_INVOKABLE QStringList getlclist(QString id);
signals:
    void updatatab(int id,QString name,QString type,QString path);
    void addlist();
    void dellist();
    void delfail();
    void delfailfb();
    void delfaildb();
    void delfailzb();
    void delfaillc();
    void uplist();
    void updef();
    void save();
    void rename();
    void defrename();
    void maskingInformation(QStringList value);
    void zpjy();
    void chnoexp();
    void delv3();

private:
    UdpClient *udpClient;
    CommonHelper *common;
};

#endif // EXECONFIG_H
